<?php


namespace app\api\controller;

use Qcloud\Sms\SmsSingleSender;
use think\Config;
use think\Controller;

class Base extends Controller
{
    /**
     * 腾讯短信
     * $phone
     * $templateId
     * $params = []
     */
    public function qCloudSms($phone,$templateId,$params = []){
        //引进配置文件
        Vendor('qcloudsms_php.src.index');
        // 短信应用SDK AppID
        $appid = 1400408637;
        // 短信应用SDK AppKey
        $appkey = "ee583615fc67ba21b9b24ad3d952fb53";

        // 需要发送短信的手机号码
        $phoneNumbers = $phone;
        // 短信模板ID，需要在短信应用中申请

        switch ($templateId) {
            case "1":
                $templateCode = '681041';// 短信登录
                break;
            case "2":
                $templateCode = '681038';// 用户注册
                break;
            case "3":
                $templateCode = '680606';// 密码重置
        }
        $templateId = $templateCode;  // NOTE: 这里的模板ID`7839`只是一个示例，真实的模板ID需要在短信控制台中申请

        // 签名
        $smsSign = "兴龙兄弟"; // NOTE: 使用真实的已申请的签名，签名参数使用的是`签名内容`，而不是`签名ID`
        $ssender = new SmsSingleSender($appid, $appkey);
        $result = $ssender->sendWithParam("86", $phoneNumbers, $templateId,
            $params, $smsSign, "", "");  // 签名参数未提供或者为空时，会使用默认签名发送短信
        $rsp = json_decode($result);
        return $rsp;
    }

    /**
     * 发送短信
     * phone 手机号
     * code 验证码
     * template 模板 1为登录 2为注册 3为忘记密码
     */
    function sendSms($phone, $code, $template){
        $msgKeyId = Config::get('msgKeyId');
        $msgKeyServer = Config::get('msgKeyServer');
        $msgSign = Config::get('msgSign');

        //引进阿里的配置文件
        Vendor('api_sdk.vendor.autoload');
        // 加载区域结点配置
        \Aliyun\Core\Config::load();
        $profile = \Aliyun\Core\Profile\DefaultProfile::getProfile('cn-hangzhou', $msgKeyId, $msgKeyServer);
        // 增加服务结点
        \Aliyun\Core\Profile\DefaultProfile::addEndpoint('cn-hangzhou', 'cn-hangzhou', 'Dysmsapi', 'dysmsapi.aliyuncs.com');
        // 初始化AcsClient用于发起请求
        $acsClient = new \Aliyun\Core\DefaultAcsClient($profile);
        // 初始化SendSmsRequest实例用于设置发送短信的参数
        $request = new \Aliyun\Api\Sms\Request\V20170525\SendSmsRequest();
        // 必填，设置雉短信接收号码
        $request->setPhoneNumbers($phone);
        // 必填，设置签名名称
        $request->setSignName($msgSign);
        // 必填，设置模板CODE
        switch ($template) {
            case "1":
                $templateCode = 'SMS_172007483';// 短信登录
                break;
            case "2":
                $templateCode = 'SMS_172007343';// 用户注册
                break;
            case "3":
                $templateCode = 'SMS_172007330';// 密码重置
        }

        $request->setTemplateCode($templateCode);
        $params = array(
            'code' => $code,
        );
        // 可选，设置模板参数
        $request->setTemplateParam(json_encode($params));
        // 可选，设置流水号
        // 发起访问请求
        $acsResponse = $acsClient->getAcsResponse($request);
        // 打印请求结果
        return $acsResponse;
    }

    /**
     * @param $array
     * @return array
     * 对象转数组
     */
    function object_array($array) {
        if(is_object($array)) {
            $array = (array)$array;
        }
        if(is_array($array)) {
            foreach($array as $key=>$value) {
                $array[$key] = $this->object_array($value);
            }
        }
        return $array;
    }
}